#ifndef TASK_SERVER_PKG__TASK_SERVER_HPP_
#define TASK_SERVER_PKG__TASK_SERVER_HPP_

#include <fstream>
#include <vector>
#include <queue>
#include <unordered_map>
#include "rclcpp/rclcpp.hpp"
#include "nav2_util/lifecycle_node.hpp"

namespace task_server_pkg
{
    class TaskServer : public nav2_util::LifecycleNode
    {
    public:
        TaskServer(const rclcpp::NodeOptions &options = rclcpp::NodeOptions());
        ~TaskServer() override;

    protected:
        nav2_util::CallbackReturn on_configure(const rclcpp_lifecycle::State &state) override;

        nav2_util::CallbackReturn on_activate(const rclcpp_lifecycle::State &state) override;

        nav2_util::CallbackReturn on_deactivate(const rclcpp_lifecycle::State &state) override;

        nav2_util::CallbackReturn on_cleanup(const rclcpp_lifecycle::State &state) override;

        nav2_util::CallbackReturn on_shutdown(const rclcpp_lifecycle::State &state) override;

    private:
        rclcpp::Node::SharedPtr node_;
        std::string planner_plugins_;
    };
}
#endif // TASK_SERVER_PKG__TASK_SERVER_HPP_